"""
11_面向对象，数据分析案例
1.设计一个类，完成数据封装
2.设计一个抽象类，定义文件读取相关功能，并用子类实现具体功能
3读取文件，生产出数据对象
4.进行数据的逻辑运算（每天销售额）
5.用pyexharts进行图形绘制
"""
from file_define import FileReader,TextFileReader,JsonFileReader
from data_define import Record
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType


text_file_reader = TextFileReader(r"D:\我的资源\2011年1月销售数据.txt")

json_file_reader = JsonFileReader(r"D:\我的资源\2011年2月销售数据JSON.txt")
jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record]= json_file_reader.read_data()

#将两个月份的数据整合到一个list中
all_data: list[Record] = jan_data +feb_data

#开始数据计算
#{"2011-01-01":1534,"2011-01-02":300,"2011-01-03":650}
data_dict = {}
for record in all_data:
    if record.date in data_dict.keys():
        # 当前日期已有,和老记录记录累加
        data_dict[record.date] += record.money

    else:
        data_dict[record.date] = record.money
# print(data_dict)

# 可视化图表
bar = Bar(init_opts=InitOpts(theme = ThemeType.WHITE))
bar.add_xaxis(list(data_dict.keys()))  #添加x轴的数据
bar.add_yaxis("销售额",list(data_dict.values()),label_opts=LabelOpts(is_show = False))  #添加y轴数据
bar.set_global_opts(
    title_opts = TitleOpts(title = "每日销售额")
)
bar.render("每日销售额柱状图.html")

